#include<stdio.h>
#define MaxSize 100
typedef int DataType;

typedef struct
{
 DataType list[MaxSize];
 int size;
}SeqList;

void ListInitiate(SeqList *L)
{
 L->size = 0;
}

int ListLength(SeqList L)
{
 return L.size;
}

int ListInsert(SeqList *L, int i, DataType x)
{
 int j;
 if(L->size >= MaxSize)
 {
  printf("顺序表已满无法插入! \n");
  return 0;
 }
 else if(i < 0 || i > L->size ) {
  printf("参数i不合法!\n");
  return 0;
 }
 else {
  for(j = L->size; j> i; j--)
   L->list[j] = L->list[j-1];
  L->list[i] = x;
  L->size ++;
  return 1;
 }
}

int ListDelete(SeqList *L, int i, DataType *x)
{
 int j;
 if(L->size <= 0) {
  printf("顺序表已空无数据元素可删! \n");
  return 0;
 }
 else if(i < 0|| i>L->size-1) {
  printf("参数i不合法");
  return 0;
 }
 else {
  *x = L->list[i];
  for(j = i+1; j <= L->size-1;j++)
   L->list[j-1] = L->list[j];
  L->size--;
  return 1;
 }
}

int ListGet(SeqList L, int i, DataType *x)
{
 if(i < 0 || i > L.size-1) {
  printf("参数i不合法! \n");
  return 0;
 }
 else {
  *x = L.list[i];
  return 1;
 }
}

int ListSearch(SeqList L, DataType x) {
 for(int i=0;i<L.size;i++) {
  if(L.list[i]==x) {
   return i;
  }
 }
 return -1;
}

int main(int argc, char * argv[])
{
 SeqList myList;
 int i, x;
 ListInitiate(&myList);
 for(i = 0; i < 10; i++)
  ListInsert(&myList,i,i+1);
 ListDelete(&myList, 4, &x);

 for(i = 0; i < ListLength(myList); i++) {
  ListGet(myList,i,&x);
  printf("%d", x);
 }
 printf("\n");
 return 0;
}
